package cn.iocoder.yudao.module.call.service.cmsipgateway;

import java.util.*;
import javax.validation.*;

import cn.hutool.core.collection.CollUtil;
import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
import cn.iocoder.yudao.module.call.controller.admin.cmsipgateway.vo.*;
import cn.iocoder.yudao.module.call.dal.dataobject.cmsipgateway.CmSipGatewayDO;
import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.common.pojo.PageParam;

/**
 * 网关配置 Service 接口
 *
 * @author 数创万维
 */
public interface CmSipGatewayService {

    /**
     * 创建网关配置
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createCmSipGateway(@Valid CmSipGatewaySaveReqVO createReqVO);

    /**
     * 更新网关配置
     *
     * @param updateReqVO 更新信息
     */
    void updateCmSipGateway(@Valid CmSipGatewaySaveReqVO updateReqVO);

    /**
     * 删除网关配置
     *
     * @param id 编号
     */
    void deleteCmSipGateway(Long id);

    /**
     * 获得网关配置
     *
     * @param id 编号
     * @return 网关配置
     */
    CmSipGatewayDO getCmSipGateway(Long id);

    /**
     * 获得网关配置分页
     *
     * @param pageReqVO 分页查询
     * @return 网关配置分页
     */
    PageResult<CmSipGatewayDO> getCmSipGatewayPage(CmSipGatewayPageReqVO pageReqVO);


    /**
     * 获得模块列表
     *
     * @param ids 模块编号数组
     * @return 模块列表
     */
    List<CmSipGatewayDO> getSipGatewayListById(Collection<Long> ids);

    List<CmSipGatewayDO> getSipGatewayList();

    default Map<Long, CmSipGatewayDO> getSipGatewayMap(Collection<Long> ids) {
        if (CollUtil.isEmpty(ids)) {
            return new HashMap<>();
        }
        return CollectionUtils.convertMap(getSipGatewayListById(ids), CmSipGatewayDO::getId);
    }

}